package com.erp.acaccount.ao.idl;

import java.util.BitSet;
import java.util.Map;
import java.util.Set;

import com.paipai.lang.uint16_t;
import com.paipai.lang.uint32_t;
import com.paipai.lang.uint64_t;
import com.paipai.util.annotation.Field;
import com.paipai.util.annotation.Member;

/**
 * 云分销(经营类会计类信息服务)AO的PO结构
 * 
 * @author WilliamXu
 * @version 1.0, 2013-10-15
 */

public class ACAccountPo {

	/**
	 * 
	 * 银行账户PO
	 * 
	 * @author WilliamXu
	 * @version 1.0, 2013-10-15
	 */
	@Member(cPlusNamespace = "erp::acaccount::po", desc = "银行账户po", isNeedUFlag = true)
	public class BankAccountPo {
		@Field(desc = " 版本号   ", defaultValue = "0", optional = true)
		uint32_t version;
		@Field(desc = "银行账户SysNo", optional = true)
		uint64_t bankAccountSysNo;
		@Field(desc = "父账户SysNo", optional = true)
		uint64_t parentBankAccountSysNo;
		@Field(desc = "银行账号", optional = true)
		String bankAccount;
		@Field(desc = "账户名称", optional = true)
		String bankAccountName;
		@Field(desc = "开户行", optional = true)
		String branchBank;
		@Field(desc = "银行类型", optional = true)
		String bankType;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "单据属性,只读", bitset = 32, optional = true)
		BitSet property;
		@Field(desc = "单据属性,设置", bitset = 32, optional = true)
		BitSet propertyInclude;
		@Field(desc = "单据属性,取消", bitset = 32, optional = true)
		BitSet propertyExclude;
		@Field(desc = "单据状态", optional = true)
		uint32_t status;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "编辑者SysNo", optional = true)
		uint64_t modifierSysNo;
		@Field(desc = "编辑时间", optional = true)
		uint32_t rowModifyDate;

	}

	/**
	 * 
	 * 银行账户Filter
	 * 
	 * @author WilliamXu
	 * @version 1.0, 2013-10-15
	 */
	@Member(cPlusNamespace = "erp::acaccount::po", desc = "銀行帳戶过滤po", isNeedUFlag = true)
	public class BankAccountFilterPo {
		@Field(desc = " 版本号   ", defaultValue = "0", optional = true)
		uint32_t version;

		@Field(desc = " 页码，从0开始 ", optional = true)
		uint32_t page;

		@Field(desc = " 页面大小 ", optional = true)
		uint32_t pageSize;

		@Field(desc = " 排序方式 ", optional = true)
		uint16_t orderType;

		@Field(desc = "sysNo列表", optional = true)
		Set<uint64_t> sysNoList;

		@Field(desc = " 上级银行SysNo ", optional = true)
		uint64_t ParentBankAccountSysNo;

		@Field(desc = " 银行账号 ", optional = true)
		String BankAccount;

		@Field(desc = " 账户名称 ", optional = true)
		String BankAccountName;

		@Field(desc = " 开户行 ", optional = true)
		String BranchBank;

		@Field(desc = " 银行类型 ", optional = true)
		String BankType;
		
		@Field(desc = "包含属性，且或关系由PropertyOption指定", bitset = 32, optional = true)
		BitSet propertyInclude;

		@Field(desc = "包含属性选项：0：且的关系；1，或的关系", optional = true)
		uint16_t propertyOption;

		@Field(desc = "排除属性，与PropertyInclude为且关系 ", bitset = 32, optional = true)
		BitSet propertyExclude;

		@Field(desc = "扩展", optional = true)
		Map<String, String> extern;

	}
	
	/**
	 * 
	 * 经营类会计项目信息表PO
	 * 
	 * @author WilliamXu
	 * @version 1.0, 2013-10-30
	 */
	@Member(cPlusNamespace = "erp::acaccount::po", desc = "经营类会计项目信息表po", isNeedUFlag = true)
	public class ACItemsPo {
		@Field(desc = " 版本号   ", defaultValue = "0", optional = true)
		uint32_t version;
		@Field(desc = "会计项目信息SysNo", optional = true)
		uint64_t aCItemsSysNo;
		@Field(desc = "父会计项目信息SysNo", optional = true)
		uint64_t parentACItemsSysNo;
		@Field(desc = "项目名称", optional = true)
		String fACItemsName;
		@Field(desc = "会计项目信息类型", optional = true)
		uint16_t aCItemsType;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "会计项目信息属性,只读", bitset = 32, optional = true)
		BitSet aCItemsProperty;
		@Field(desc = "会计项目信息属性,设置", bitset = 32, optional = true)
		BitSet aCItemsPropertyInclude;
		@Field(desc = "会计项目信息属性,取消", bitset = 32, optional = true)
		BitSet aCItemsPropertyExclude;
		@Field(desc = "会计项目信息状态", optional = true)
		uint32_t aCItemsStatus;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "编辑者SysNo", optional = true)
		uint64_t modifierSysNo;
		@Field(desc = "编辑时间", optional = true)
		uint32_t rowModifyDate;
	}
	
	/**
	 * 
	 * 经营类会计项目信息表FilterPO
	 * 
	 * @author WilliamXu
	 * @version 1.0, 2013-10-30
	 */
	@Member(cPlusNamespace = "erp::acaccount::po", desc = "经营类会计项目信息表过滤po", isNeedUFlag = true)
	public class ACItemsFilterPo {
		@Field(desc = " 版本号   ", defaultValue = "0", optional = true)
		uint32_t version;
		@Field(desc = "会计项目信息SysNo", optional = true)
		uint64_t aCItemsSysNo;
		@Field(desc = "父会计项目信息SysNo", optional = true)
		uint64_t parentACItemsSysNo;
		@Field(desc = "项目名称", optional = true)
		String fACItemsName;
		@Field(desc = "会计项目信息类型", optional = true)
		uint16_t aCItemsType;
		@Field(desc = "备注", optional = true)
		String comment;
		@Field(desc = "会计项目信息属性,只读", bitset = 32, optional = true)
		BitSet aCItemsProperty;
		@Field(desc = "会计项目信息属性,设置", bitset = 32, optional = true)
		BitSet aCItemsPropertyInclude;
		@Field(desc = "会计项目信息属性,取消", bitset = 32, optional = true)
		BitSet aCItemsPropertyExclude;
		@Field(desc = "会计项目信息状态", optional = true)
		uint32_t aCItemsStatus;
		@Field(desc = "创建人SysNo", optional = true)
		uint64_t creatorSysNo;
		@Field(desc = "创建时间", optional = true)
		uint32_t rowCreatDate;
		@Field(desc = "编辑者SysNo", optional = true)
		uint64_t modifierSysNo;
		@Field(desc = "编辑时间", optional = true)
		uint32_t rowModifyDate;
		
		@Field(desc = "包含属性，且或关系由PropertyOption指定", bitset = 32, optional = true)
		BitSet propertyInclude;

		@Field(desc = "包含属性选项：0：且的关系；1，或的关系", optional = true)
		uint16_t propertyOption;

		@Field(desc = "排除属性，与PropertyInclude为且关系 ", bitset = 32, optional = true)
		BitSet propertyExclude;
		
		@Field(desc = "扩展", optional = true)
		Map<String, String> extern;
	}
}
